package config

import (
	"fmt"
	"os"
	"path/filepath"
	"runtime"
)

var (
	ConfigDir     string
	KeyFile       string
	ConfigFileExt = ".json"
)

func init() {
	if runtime.GOOS == "windows" {
		// Windows平台使用用户主目录的.PasswordReset目录
		homeDir, err := os.UserHomeDir()
		if err != nil {
			panic("无法获取用户主目录: " + err.Error())
		}
		ConfigDir = filepath.Join(homeDir, ".PasswordReset")
		KeyFile = filepath.Join(ConfigDir, ".key")
	} else {
		// Linux平台使用/etc/PasswordReset
		ConfigDir = "/etc/PasswordReset"
		KeyFile = "/etc/PasswordReset/.key"
	}
}

// UserConfig 用户配置结构体
type UserConfig struct {
	Username       string `json:"username"`
	Password       string `json:"password"`
	AutoCreateUser bool   `json:"auto_create_user"` // 是否自动创建用户
	PasswordPrefix bool   `json:"password_prefix"`  // 密码前缀模式：true=前缀，false=后缀
}

// InitConfig 初始化配置
func InitConfig() error {
	// 确保密钥存在
	key, err := EnsureKeyExists()
	if err != nil {
		return fmt.Errorf("确保密钥存在失败: %v", err)
	}

	// 创建默认用户配置
	defaultUsers := []*UserConfig{
		{Username: "admin", Password: "default123", AutoCreateUser: false, PasswordPrefix: false},
		{Username: "backup", Password: "backup123", AutoCreateUser: false, PasswordPrefix: false},
	}

	// 保存每个用户的配置
	for _, user := range defaultUsers {
		if err := SaveUserConfig(user, key); err != nil {
			return fmt.Errorf("保存用户配置失败: %v", err)
		}
	}

	return nil
}

// CheckInit 检查系统是否已初始化
func CheckInit() bool {
	// 检查配置目录是否存在
	if _, err := os.Stat(ConfigDir); os.IsNotExist(err) {
		return false
	}
	
	// 检查密钥文件是否存在
	if _, err := os.Stat(KeyFile); os.IsNotExist(err) {
		return false
	}
	
	return true
}